package com.smart.advisor;

import java.lang.reflect.Method;

import org.springframework.aop.ClassFilter;
import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;

/**
 * Advisor 切面。
 * 静态切面：
 * 		生成代理对象时，就确定了，增强是否需要织入切入点。
 */
public class GreetingAdvisor extends StaticMethodMatcherPointcutAdvisor {

	/**
	 * 规定被切得 方法
	 * @param method
	 * @param clazz
	 * @return
	 */
	public boolean matches(Method method, Class clazz) {
		return "greetTo".equals(method.getName());
	}

	/**
	 * 规定被切得 类
	 * @return
	 */
	public ClassFilter getClassFilter(){
		return new ClassFilter(){
			public boolean matches(Class clazz){
				return Waiter.class.isAssignableFrom(clazz);
			}
		};
		
	}
}
